home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Demos / A.D. Software / OOFILE / Buildable, limited OOFILE / source / GUI / zApp-old / oofzapp.hpp < prev    next >
Text File  |  1995-06-04  |  10KB  |  355 lines

  1. #ifndef H_OOFzApp
  2. #define H_OOFzApp
  3.  
  4. // COPYRIGHT 1994 A.D. Software, All rights reserved
  5.  
  6. // zApp Integration layer of OOFILE database
  7.  
  8. // NOTE inline definitions included at end of this header file
  9. #include "OOF1.hpp"
  10. #include "zapp.hpp"
  11. #include <intpack\zip.hpp>
  12. #include "zvbx.hpp"
  13. #include "sspp.h"
  14.  
  15. char* newFileNameFromPath(const char*);
  16.  
  17. class SSTable_Sheet;
  18. class SSTable : public CVBControl {
  19. public:
  20.     SSTable(zWindow*, zSizer*, int id_, DWORD=0);
  21.     SSTable(zFrameWin*, int id_);
  22.    virtual ~SSTable();
  23.     unsigned long countRowsSelected();
  24.     unsigned long selectedRow();
  25.     virtual unsigned long appendBlankRow();
  26.     void setRowColor(long newColor);
  27.     virtual long eventVBX(zVBXEvent *);
  28.     void selectCol(unsigned int theCol);
  29.     void selectRow(unsigned int theRow);
  30.     // Spread Events
  31.     virtual void receiveDoubleClick(long Col, long Row) {};
  32.     virtual void enterRow(long Row) {};
  33.     virtual void leaveModifiedCell(long Col, long Row) {};
  34.  
  35.     SSTable_Sheet* mSheet;   // owned
  36. protected:
  37.     long mCurRow;
  38. };
  39.  
  40.  
  41. class SSTable_Sheet : public CSpreadSheet
  42. {
  43.  public:
  44.     SSTable_Sheet(SSTable *tbl) :
  45.                         CSpreadSheet(tbl),
  46.                         mTable(tbl),
  47.                   mCurRow(0)
  48.     {};
  49.     virtual ~SSTable_Sheet() {};
  50.  private:
  51.     void operator=(const SSTable_Sheet&) { assert(0); };
  52.  
  53.  public:
  54.     void selectCol(unsigned int theCol);
  55.     void selectRow(unsigned int theRow);
  56.   //
  57.    // Spread Events                                                                                                         
  58.     //
  59.     virtual void DblClick(long Col, long Row);
  60.     virtual void EditMode(long Col, long Row, int Mode, int ChangeMade);
  61.  private:
  62.     SSTable *mTable;
  63.     unsigned int mCurRow;
  64. };
  65.  
  66.  
  67. class dbSSViewTable : public SSTable {
  68. public:
  69.     dbSSViewTable(zWindow*,zSizer*,int id_,dbView&, DWORD=WS_BORDER|LBS_NOTIFY|LBS_SORT|LBS_NOINTEGRALHEIGHT|WS_VSCROLL);
  70.     dbSSViewTable(zFrameWin*, int id_, dbView&);
  71.     virtual ~dbSSViewTable() {};
  72.     void loadEntireTable();
  73.     void addRowFromCurrentRecord();
  74.     void redrawCurrentRecord(long newColor=RGB(0, 0, 0));
  75.     short cellTypeOfField(dbField*);
  76.     void colTypeIsDate(const int colNum, const char* minDate=0, const char* maxDate=0);
  77.     void colTypeIsCheck(const int colNum);
  78.     void colTypeIsCombo(const int colNum, const char* comboString);
  79.     void colWrapsText(const int colNum);
  80.     void setCellTypeForField(dbField*);
  81. protected:
  82.     void SetColsFromView();
  83.     void SetColHeadingsFromView();
  84.     void SetColWidthsFromView();
  85.     virtual void SetupSheet()=0;
  86. protected:
  87.     dbView mFields;
  88. };
  89.  
  90.  
  91. class dbEditMgr;
  92. class dbSSBrowseTable : public dbSSViewTable {
  93. public:
  94.     dbSSBrowseTable(zWindow*,zSizer*,int id_, dbEditMgr*, dbView&, DWORD=WS_BORDER|LBS_NOTIFY|LBS_SORT|LBS_NOINTEGRALHEIGHT|WS_VSCROLL);
  95.     dbSSBrowseTable(zFrameWin*, int id_, dbEditMgr*, dbView&);
  96.     virtual ~dbSSBrowseTable() {};
  97.     virtual int size(zSizeEvt*);
  98.     virtual void receiveDoubleClick(long Col, long Row);
  99.     void selectFirst();
  100.     void selectNext();
  101.     void selectPrev();
  102.     void selectLast();
  103. protected:
  104.     virtual void SetupSheet();
  105. private:
  106.     dbEditMgr* mEditMgr;   // may be passed in zero
  107. };
  108.  
  109.  
  110. class dbSSEditTable : public dbSSViewTable {
  111. public:
  112.     dbSSEditTable(zFrameWin*, int id_, dbView&);
  113.     virtual ~dbSSEditTable() {};
  114.     virtual unsigned long appendBlankRow();
  115.     virtual void enterRow(long Row);
  116.     virtual void leaveModifiedCell(long Col, long Row);
  117. protected:
  118.     virtual void SetupSheet();
  119. };
  120.  
  121.  
  122. class dbzListBrowseTable : public zListBox {
  123. public:
  124.     dbzListBrowseTable(zWindow*,zSizer*,int id_,dbView&, DWORD=WS_BORDER|LBS_NOTIFY|LBS_SORT|LBS_NOINTEGRALHEIGHT|WS_VSCROLL);
  125.     void loadEntireTable();
  126. protected:
  127.     dbView mFields;
  128. };
  129.  
  130. class OOF_MixEditPage;
  131. class dbEditMgr : public dbClass {
  132. public:
  133.     dbEditMgr();
  134.                     
  135.     virtual void leavingPage(zVBXFormDialog*);
  136.     virtual void newRecord();
  137.     virtual void startPageTransition(zCommandEvt* ev);
  138.     virtual void completePageTransition(zVBXFormDialog* newDialog, const int newPageMenuItemNum=0);    // leave out to avoid ticking
  139.     virtual void saveRecord();    // override to do complex save
  140.     virtual void saveAsText(char* fileName);
  141.     zFont* enableDefEditFont();
  142.     void appendPage(OOF_MixEditPage*);  // called on creation of new pages - we assume they are all deleted together
  143.  
  144.     // blank virtuals for possible browser - OVERRIDE IF YOU WANT ACTION!
  145.     virtual void doubleClickedBrowser(long row) {};
  146.     virtual void browserSelectFirst() {};
  147.     virtual void browserSelectNext() {};
  148.     virtual void browserSelectPrev() {};
  149.     virtual void browserSelectLast() {};
  150.  
  151.     virtual void firstRecord();
  152.     virtual void nextRecord();
  153.     virtual void prevRecord();
  154.     virtual void lastRecord();
  155.  
  156. protected:
  157.     void MainTable(dbTable* tbl);
  158.     void DatabaseConnection(dbConnect* db);
  159.     virtual void UpdateDisplayForEditedRecord();
  160.    virtual void InvalidateAllPages();
  161.     
  162. // data storage
  163.     int mCurrPageCommandNum;
  164.     zMenu* mMenu;
  165.     bool    mEditing, mChangingPages, mNew;
  166.     zVBXFormDialog* mCurrDialog;
  167.     zFontSpec mDefEditFontSpec;
  168.     OOF_ExpandableLongArray mPages;
  169. // copies of what are probably members of the subclass used to manage the output
  170. // list or other database front-end. We need these so we can provide default
  171. // behaviour here in the mixin, that can be overridden if absolutely needed
  172. // but is useful from day one.
  173.     dbTable*    mMainTable;
  174.     dbConnect* mDatabase;
  175.  
  176. private:
  177.     static dbEditMgr* sFrontmost;
  178.     static zFont* sDefEditFont;
  179. public:
  180.     static dbEditMgr* frontmostEditMgr();
  181.     static zFont* defEditFont();
  182.     static void setDefEditFont(zFont*);
  183.    static void warnUser(ostream& os);
  184. };
  185.  
  186.  
  187. class    OOF_MixEditPage
  188. {
  189. public:
  190.     OOF_MixEditPage(zVBXFormDialog* thisDialog, dbEditMgr* editMgr);
  191.     virtual ~OOF_MixEditPage();
  192.  
  193.     void bringToFront();
  194.     void invalidatePage();
  195.  
  196. protected:
  197.     zFont* mEditFont;  // owned
  198.     dbEditMgr* mEditMgr;
  199.     zVBXFormDialog* mThisDialog;
  200.     bool mValid;
  201. };
  202.  
  203.  
  204.  
  205. class OOF_MixEditField {
  206. protected:
  207.     void CompleteInit(zControl* child);
  208. };
  209.  
  210.  
  211. class zdbEditLine : public zEditLine, public OOF_MixEditField {
  212. public:
  213.     zdbEditLine(zFrameWin* w, int id, dbChar& dest_, unsigned long flags=0);
  214.  
  215.     virtual int storeData();
  216.     virtual int setToDefault();
  217.  
  218. private:
  219.     dbChar&    mField;
  220. };
  221.  
  222.  
  223. class zdbEditCombo : public zComboBoxFull, public OOF_MixEditField {
  224. public:
  225.     zdbEditCombo(zFrameWin* w, int id, dbChar& dest_, unsigned long flags=0);
  226.  
  227.     virtual int storeData();
  228.     virtual int setToDefault();
  229.  
  230. private:
  231.     dbChar&    mField;
  232. };
  233.  
  234.  
  235. class zdbEditDate : public zEditLine, public OOF_MixEditField {
  236. public:
  237.     zdbEditDate(zFrameWin* w, int id, dbDate& dest_, unsigned long flags=0);
  238.     virtual int storeData();
  239.     virtual int setToDefault();
  240.  
  241. private:
  242.     dbDate&    mField;
  243. };
  244.  
  245.  
  246. class zdbCharEditBox : public zEditBox, public OOF_MixEditField {
  247. public:
  248.     zdbCharEditBox(zWindow *w,zSizer* siz,DWORD style, dbChar& dest_, int id=0);
  249.     zdbCharEditBox(zFrameWin* w,int id, dbChar& dest_, unsigned long flags=0);
  250.  
  251.     virtual int storeData();
  252.     virtual int setToDefault();
  253.     
  254.  private:
  255.     dbChar&    mField;
  256. };
  257.  
  258.  
  259. class zdbTextEditBox : public zEditBox, public OOF_MixEditField {
  260.  public:
  261.     zdbTextEditBox(zWindow *w,zSizer* siz,DWORD style, dbText& dest_, int id=0);
  262.     zdbTextEditBox(zFrameWin* w,int id, dbText& dest_, unsigned long flags=0);
  263.  
  264.     virtual int storeData();
  265.     virtual int setToDefault();
  266.     
  267.  private:
  268.     dbText&    mField;
  269. };
  270.  
  271.  
  272. class zdbShortEdit : public zIntEdit, public OOF_MixEditField {
  273. public:
  274.     zdbShortEdit(zFrameWin* w,int id, dbShortInt& dest_, char *pictStr, unsigned long flags=0);
  275.     zdbShortEdit(zFrameWin* w,int id, dbShortInt& dest_, zFormatter *formatter, unsigned long flags=0);
  276.     zdbShortEdit(zFrameWin* w,int id, dbShortInt& dest_, unsigned long flags=0);
  277.     zdbShortEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbShortInt& dest_, char *pictStr, unsigned long flags);
  278.     zdbShortEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbShortInt& dest_, zFormatter *formatter, unsigned long flags);
  279.     zdbShortEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbShortInt& dest_, unsigned long flags);
  280.  
  281.     virtual int storeData();
  282.     virtual int setToDefault();
  283.  
  284.  private:
  285.     dbShortInt&    mField;
  286. };
  287.  
  288.  
  289. class zdbLongEdit : public zLongEdit, public OOF_MixEditField {
  290. public:
  291.     zdbLongEdit(zFrameWin* w,int id, dbLong& dest_, char *pictStr, unsigned long flags=0);
  292.     zdbLongEdit(zFrameWin* w,int id, dbLong& dest_, zFormatter *formatter, unsigned long flags=0);
  293.     zdbLongEdit(zFrameWin* w,int id, dbLong& dest_, unsigned long flags=0);
  294.     zdbLongEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbLong& dest_, char *pictStr, unsigned long flags);
  295.     zdbLongEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbLong& dest_, zFormatter *formatter, unsigned long flags);
  296.     zdbLongEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbLong& dest_, unsigned long flags);
  297.  
  298.     virtual int storeData();
  299.     virtual int setToDefault();
  300.     virtual int checkData();
  301.  
  302.  private:
  303.     dbLong&    mField;
  304. };
  305.  
  306.  
  307. class zdbRealEdit : public zDoubleEdit, public OOF_MixEditField {
  308. public:
  309.     zdbRealEdit(zFrameWin* w,int id, dbReal& dest_, char *pictStr, unsigned long flags=0);
  310.     zdbRealEdit(zFrameWin* w,int id, dbReal& dest_, zFormatter *formatter, unsigned long flags=0);
  311.     zdbRealEdit(zFrameWin* w,int id, dbReal& dest_, unsigned long flags=0);
  312.     zdbRealEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbReal& dest_, char *pictStr, unsigned long flags);
  313.     zdbRealEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbReal& dest_, zFormatter *formatter, unsigned long flags);
  314.     zdbRealEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbReal& dest_, unsigned long flags);
  315.  
  316.  
  317.     virtual int storeData();
  318.     virtual int setToDefault();
  319.  
  320.  private:
  321.     dbReal&    mField;
  322. };
  323.  
  324. class zdbRadioGroup : public zRadioGroup, public OOF_MixEditField {
  325. public:
  326.     zdbRadioGroup(zFrameWin* w,int idLo, int idHi, dbShortInt& dest_);
  327.     virtual int storeData();
  328.     virtual int setToDefault();
  329.  
  330.  private:
  331.     dbShortInt&    mField;
  332. };
  333.  
  334.  
  335. class dbBrowseVRowModel : public zTableVirtualRowModel {
  336. public:
  337.     dbBrowseVRowModel(dbView& fields) :
  338.                             zTableVirtualRowModel(fields.count(), fields.source()->count()),
  339.                             mFields(fields)
  340.                             { coverWithReadOnly(); };
  341.     virtual int discardRow(unsigned long row);  // override zApp
  342.     virtual int demandLoadRow(unsigned long row);  // override zApp
  343.     virtual void AppendBlankRow();
  344.     virtual void InsertBlankRow(unsigned long row);
  345.  
  346. protected:
  347.     void coverWithReadOnly();
  348.  
  349. // data storage
  350.     dbView mFields;
  351. };
  352.  
  353. #include "OOFzApp.inl"
  354. #endif
  355.